package core.thread;

import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

/**Clase que sirve para buscar una ruta para abrir un archivo
 * @author alvarogarcia
 *
 */
public class HiloBusqueda {
	private String ruta;
	private String extension;
	private Thread t;

	/**
	 * Constructor sin parametros que no hace mas que declarar el hilo.
	 */
	public HiloBusqueda() {
		declararHilo();
	}

	/**Constructor con parametros
	 * @param extension Recibe un String que limita la busqueda en funcion de la extension que seleccionemos.
	 */
	public HiloBusqueda(String extension) {
		this.extension = extension;
		declararHilo();
	}

	/**Metodo para obtener la ruta seleccionada
	 * @return Devuelve la ruta que hemos seleccionado.
	 */
	public String getRuta() {
		return this.ruta;
	}

	/**
	 * Metodo que declara un hilo para luego ejecutarlo.
	 */
	public void declararHilo() {
		t = new Thread(new Runnable() {
			/* (non-Javadoc)
			 * @see java.lang.Runnable#run()
			 */
			public void run() {
				JFileChooser explorador = new JFileChooser();

				// Le cambiamos el titulo
				explorador.setDialogTitle("Abrir documento...");

				// Agregamos un filtro de extensiones
				explorador.setFileFilter(new FileNameExtensionFilter("Archivo "
						+ extension, extension));
				int seleccion = explorador.showDialog(null, "Enviar "
						+ extension);

				// analizamos la respuesta
				switch (seleccion) {
				case JFileChooser.APPROVE_OPTION:
					// Podemos crear un File con lo seleccionado
					File archivo = explorador.getSelectedFile();

					// y guardar una ruta
					ruta = archivo.getPath();
					break;

				case JFileChooser.CANCEL_OPTION:
					ruta = null;

					break;

				case JFileChooser.ERROR_OPTION:
					System.out.println("Ha ocurrido un error");
					break;
				}
			}

		});

	}

	/**
	 *Metodo al que se llama para arrancar el hilo. 
	 */
	public void arrancarHilo() {
		t.run();
	}
}
